home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Libris Britannia 4
/
science library(b).zip
/
science library(b)
/
PROGRAMM
/
TUTORIAL
/
0222.ZIP
/
PARSE.P
< prev
next >
Wrap
Text File
|
1982-02-28
|
2KB
|
66 lines
PROCEDURE TRIM (VAR S: LSTRING) ;
VAR
I_X,
I_R,
I_L,
I_C, : INTEGER ;
T : LSTRING(255) ;
BEGIN
COPYLST(S,T);
I_L := T. LEN ;
I_C := 1 ;
WHILE (T[I_C] = ' ') DO
BEGIN
I_C := I_C + 1;
END;
{ I_C WILL CONTAIN FIRST NONBLANK CHAR POSITION}
I_R := 1 ;
FOR I_X := I_C TO I_L DO
BEGIN
S[I_R] := T[I_X];
I_R := I_R + 1 ;
END; {FOR I_X }
END; {TRIM}
function getword (var w: lstring; var l: lstring) : integer ;
var
wo_rd,
temp : lstring(255) ;
i_word,
i_str,
i_ndex,
i_wlen,
i_llen : integer ;
e_wrd : char ;
BEGIN
I_WLEN := UPPER(W) ;
I_LLEN := L.LEN ;
I_WORD := 0 ;
E_WRD := ' ' ; {TERMINATION CHARACTER FOR CURRENT WORD SCAN}
I_STR := 0 ;
COPYLST(L,TEMP);
WO_RD := NULL ;
IF TEMP[1] = ' ' THEN
TRIM(TEMP) ; {tRIM LEADING BLANKS FROM STRING}
IF TEMP[1] = '''' THEN E_WRD := '''' ;
IF TEMP[1] = '"' THEN E_WRD := '"' ;
IF TEMP[1] = '(' THEN E_WRD := ')' ;
IF TEMP[1] = '[' THEN E_WRD := ']' ;
IF TEMP[1] = '{' THEN E_WRD := '}' ;
I_STR := INDEX(TEMP,E_WRD) ;
I_STR := I_STR - 1 ;
FOR I_NDEX := 2 TO I_STR DO
BEGIN
WO_RD[I_NDEX] := TEMP[I_NDEX] ;
END; {FOR INDEX 2 TO ISTR}
I_STR := I_STR + 2;
FOR I_NDEX := I_STR TO I_LLEN DO
L[I_NDEX] := TEMP[I_NDEX] ;
{ INPUT STRING HAS HAD WORD TRIMMED OFF FRONT}
COPYLST(WO_RD,W) ;
{ WORD FIELD IS PASSED BACK TO "W" PARAMETER }
GETWORD := WO_RD.LEN ;
{ fUNCTION RETURN VALUE SET TO WORD LENGTH }
{ ** or zero IF NO WORD TO RETURN }
END;